#include <iostream>
#include <exception>
// 3

// 实现一个自己的异常类：继承exception，里面写一个what()函数即可
class MyException : public std::exception  
{
public:
    MyException(const std::string &str)
    {
        this->str = str;
    }

    virtual const char *what() const noexcept // noexcept： 当前函数不会抛出异常
    {
        std::cout << "这是我自己的异常类\n";
        return str.c_str();
    }

private:
    std::string str;
};

int divide(int a, int b)
{
    if (b == 0)
        throw std::invalid_argument("除数为0!");
    return a / b;

    if (b == 0)
        throw MyException("除数为0!");   // 抛出子类
    return a / b;
}

int main()
{
    try
    {
        divide(1, 0);
    }
    catch (const std::exception &e)    // 父类去接
    {
        std::cerr << e.what() << '\n';
    }
}
